package E_2024;

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

/*
题目描述
    跳房子，也叫跳飞机，是一种世界性的儿童游戏。
    游戏参与者需要分多个回合按顺序跳到第1格直到房子的最后一格。
    跳房子的过程中，可以向前跳，也可以向后跳。
    假设房子的总格数是count，小红每回合可能连续跳的步教都放在数组steps中，请问数组中是否有一种步数的组合，可以让小红两个回合跳到量后一格?
    如果有，请输出索引和最小的步数组合。
    注意：
        数组中的步数可以重复，但数组中的元素不能重复使用。
        提供的数据保证存在满足题目要求的组合，且索引和最小的步数组合是唯一的。
输入描述
    第一行输入为房子总格数count，它是int整数类型。
    第二行输入为每回合可能连续跳的步数，它是int整数数组类型。
输出描述
    返回索引和最小的满足要求的步数组合（顺序保持steps中原有顺序）
输入
[1,4,5,2,2]
7
输出
[5, 2]
 */
public class E_100_25 {
    public static void main(String[] args) {
        System.out.println(Arrays.toString(ans(new int[]{1, 4, 5, 2, 2}, 7)));
    }
    public static int[] ans(int[] steps , int count){
        Map<Integer, Integer> stepMap = new HashMap<>();
        for (int i = 0; i < steps.length; i++) {
            stepMap.putIfAbsent(steps[i], i);
        }
        for (Integer key : stepMap.keySet()) {
            Integer vv = stepMap.get(count - key);
            if (vv != null){
                Integer kv = stepMap.get(key);
                if (kv > vv) return new int[]{count-key,key};
                else return new int[]{key,count-key};
            }
        }
        return null;
    }
}
